The present invention relates to a method and an apparatus for executing a plurality of transaction programs in parallel, and in particular to a method and an apparatus applicable to a computer in which multiple access to a shared resource occurs simultaneously in transaction programs.
This application is based on Japanese Patent Application No. Hei 9-239793, the contents of which are incorporated herein by reference.
In a conventional computer system in which multiple access to an identical resource occurs through transaction programs, a second transaction program to update the resource is kept waiting exclusively until the update of the resource through the first transaction program is completed (commit or rollback) when the resource is being provisionally updated through a first transaction program, thus avoiding conflict in the resource.
Japanese Patent Application, First Publication No. Hei 8-235047 discloses a method for improving a process efficiency in transaction programs. According to the disclosure, when access to an identical resource occurs through first and second transaction programs, a second transaction program does not wait, and a completion step (commit or rollback) in a first transaction program is arranged to correspond to a completion step in the second transaction program, thereby improving the performance in execution of the transaction programs.
However, in the conventional method described above, the transaction programs cannot be executed in parallel and the process efficiency cannot be improved in the conventional computer system in which multiple access to an identical resource occurs through transaction programs, because when the resource is being provisionally updated through a first transaction program, a second transaction program to update the resource has been kept waiting exclusively until the update of the resource through the first transaction program is completed (commit or rollback) in order to avoid the conflict in the resource.
Further, in the method disclosed in Japanese Patent Application, First Publication No. Hei 8-235047, there is the problem in that when commit is normally executed in the first transaction program to access to the resource prior to the second transaction program, it is necessary to roll back and restart the second transaction program.
It is therefore an object of the present invention to provide a method and an apparatus which can improve a performance in transaction programs.
In order to accomplish the above object, a method for executing a plurality of transaction programs in parallel in a computer, comprises the steps of: provisionally updating a resource through a first transaction program and locking the resource; determining if a second transaction program generates a request to update the resource which has been locked because of the provisional update through the first transaction program: making the second transaction program exclusively waiting and reproducing a third transaction program having an internal status identical to that of the second transaction program when the second transaction program generates the update request; providing a virtual resource having an original status before the provisional update through the first transaction program; provisionally updating the virtual resource through the third transaction program without exclusive wait; and rolling back and closing the exclusively waiting second transaction program and executing commit in the reproduced third transaction program when rollback of the first transaction program is executed due to an abnormal situation detected in the first transaction program.
In another aspect of the present invention, the method further comprises the step of: resuming the exclusively waiting second transaction program and rolling back and closing the reproduced third transaction program when commit is normally executed in the first transaction program. Executable units of the first transaction program and the second transaction program are jobs, processes, tasks, or threads.
Further, an apparatus of the present invention comprises: a means for provisionally updating a resource through a first transaction program and locking the resource; a means for determining if a second transaction program generates a request to update the resource which has been locked because of the provisional update through the first transaction program: a means for making the second transaction program exclusively wait; a means for reproducing a third transaction program having an internal status identical to that of the second transaction program when the second transaction program generates the update request; a means for providing a virtual resource having an original status before the provisional update through the first transaction program; a means for provisionally updating the virtual resource through the third transaction program without exclusive wait; and a means for rolling back and closing the exclusively waiting second transaction program and executing commit in the reproduced third transaction program when rollback of the first transaction program is executed due to an abnormal situation detected in the first transaction program.
According to the present invention, a computer-readable medium contains program instructions for performing the steps of: provisionally updating a resource through a first transaction program and locking the resource; determining if a second transaction program generates a request to update the resource which has been locked because of the provisional update through the first transaction program; making the second transaction program exclusively wait and reproducing a third transaction program having an internal status identical to that of the second transaction program when the second transaction program generates the update request; providing a virtual resource having an original status before the provisional update through the first transaction program; provisionally updating the virtual resource through the third transaction program without exclusive wait; and rolling back and closing the exclusively waiting second transaction program and executing commit in the reproduced third transaction program when rollback of the first transaction program is executed due to an abnormal situation detected in the first transaction program.
According to the present invention, the reproduced transaction program is executed in parallel, and a post-process after release from a exclusive wait status is carried out in advance, thereby shortening a time required for execution of the transaction program and enhancing the performance in the transaction program.